iT邦幫忙

0
鐵人賽 神助攻 HERE Technologies

快速建構地圖服務(九)- Isoline Routing

WW 2020-09-17 16:14:571707 瀏覽
  • 分享至 

  • xImage
  •  

快速建構地圖服務(九)- 認識 HERE Routing API - Isoline Routing

我們已經談過了算出一條路徑的「路徑規劃」功能,也談過了同時算出多條路徑的「Matrix Routing」,現在我們就來談談「Isoline Routing」。

Isoline,中文叫做「等高線」,等高線跟路徑規劃又有什麼關係呢?依照維基百科的說明,等高線的定義是「地形圖上高程相等的各點所連成的閉合曲線,是等值線的一種特殊形式。」請注意關鍵字「等值線」。

圖出自施添福主編(1999),高級中學地理第一冊,臺北:龍騰文化出版社,第3頁

因此我們可以建立兩個觀念觀念:

  1. 等高線必然是閉合的曲線
  2. 等高線上面的任何一個點,海拔高度必定相等。

但這跟路徑規劃有什麼關係呢?我們可以舉個例子,我今天是一間蛋糕店的老闆,我今天要怎麼決定我能夠外送到哪邊呢?因為蛋糕不能離開冷藏太久,因此我可以簡單規定「外送限於路程 15 分鐘內的客戶」,但要怎麼定出「15 分鐘」的範圍?這就需要 Isoline Routing 了。

假設我今天是一個連鎖蛋糕店的經營者,這對我來說更重要了,我就可以分析我的每一間分店外送路程在 15 分鐘內的範圍,這樣我就知道哪些地方可能有大量的蛋糕需求(例如辦公大樓的下午茶需求)卻不在我的服務範圍內,因此可以增加我的服務據點,或是採取其他的策略來滿足更多客戶。

以個人用途來說,我今天在電動車充電站充飽了電之後,要怎麼知道這些電量可以讓我到哪些地方呢?我或許沒有明確的目的地,只想騎車到處亂晃,我就可以用這些電的行駛里程數來算出一個「我可以到達的範圍」。如果我的電動車廠商提供這樣的服務,是不是能夠有效的減少消費者的里程焦慮呢?

下面這張圖,就畫出了我在台北市萬華區的電動車充電站充滿電之後可行駛 50 公里的範圍,其實已經可以接近新竹縣的竹北市了。

因此我們可以知道,使用 Isoline Routing 並不是用來算出實際的路徑,而是算出一個「可及的範圍」,因此會是一個封閉的多邊形。

HERE Routing API 的 Isoline Routing 也具有以下特色:

  • 支援汽車、卡車、與行人的路徑規劃。
  • 可以支援即時/歷史道路路況,預估出更準確的可及範圍。
  • 可以計算「從起點出發」與「到達特定終點」的可及範圍。
  • 可以選擇以限定時間或限定距離來計算。
  • 可以避開高快速道路、收費道路、渡輪、特定大眾運輸工具等等。
  • 支援電動車的功耗模型,算出更符合電動車的可及範圍。
  • 支援詳細的卡車限制定義,如長/寬/高/重量/軸數/載運物等等。

以下就是一個 Isoline Routing 回傳結果的範例,在「isoline」這個屬性中您可以看到一個「shape」,裡面有一串經緯度,這串經緯度就是構成這個封閉多邊形的一連串點位。而下方的「start」屬性中有「originalPosition」屬性,裡面的經緯度就代表出發地。

{
  "response": {
    "metaInfo": {
      "timestamp": "2020-09-17T06:28:52Z",
      "mapVersion": "8.30.112.153",
      "moduleVersion": "7.2.202036-7801",
      "interfaceVersion": "2.6.76",
      "availableMapVersion": [
        "8.30.112.153"
      ]
    },
    "center": {
      "latitude": 52.5159999,
      "longitude": 13.3777999
    },
    "isoline": [
      {
        "range": 100,
        "component": [
          {
            "id": 0,
            "shape": [
              "52.51688,13.3778286",
              "52.5172234,13.3780861",
              "52.5172234,13.3784294",
              "52.5158501,13.3798027",
              "52.5155067,13.3798027",
              "52.5153351,13.3792877",
              "52.5153351,13.3786011",
              "52.5155067,13.3780861",
              "52.5161934,13.3773994",
              "52.5165367,13.3773136",
              "52.51688,13.3778286"
            ]
          }
        ]
      }
    ],
    "start": {
      "linkId": "+733073542",
      "mappedPosition": {
        "latitude": 52.5160415,
        "longitude": 13.3782512
      },
      "originalPosition": {
        "latitude": 52.5159999,
        "longitude": 13.3777999
      }
    }
  }
}

使用 HERE Routing API Reference Client 玩轉 Isoline Routing

快速建構地圖服務(七)- 認識 HERE Routing API - 路徑規劃 一文中我們已經介紹過 HERE Routing API Reference Client 這個有用的工具,我們也可運用這個工具來體驗 Matrix Routing,會更有效率。

打開 HERE Routing API Reference Client,接著請先按下左上角的「New Tab +」,選擇「Caculate Isoline」,您會看到畫面上面多了一個「Isoline 1」的標籤頁,這個標籤頁就是 Matrix Routing;而旁邊的「 OLS 1」則是 Routing API V8。

接著我們可以把地圖移動到台灣。

在地圖上按下右鍵,也會出現幾個似曾相識的選項:

接著請在地圖上隨意處按下右鍵選擇「Add Start」來定義一個起點。接著在左方的「Range」選擇「Distance」,在「VALUE, M」中輸入「1000」,然後按下右下方的「Send」。

接著畫面上會出現一個封閉的多邊形,以我的案例來說,我以「台北 101」的位置(經緯度座標為 25.033909,121.564473)作為起點,使用預設的模式計算汽車的最快路徑,「Range」定義的可及範圍為 1000 公尺,畫面上出現的範圍就是「以台北 101 為起點開車行駛 1000 公尺可以抵達的範圍」。

HERE Isoline Routing 最有趣的是,我們可以算出不只一個可及範圍,請把「Range」中的「1000」改成「1000,2000,3000」,意思就是我們要一次計算出三個範圍,分別是 1000 公尺、2000 公尺與 3000 公尺,接著按下右下角的「Send」,來看看發生了什麼事。

在計算出的結果中,特別有趣的是「Isoline 1」代表 2000 公尺以及「Isoline 2」代表 3000 公尺,可以看到計算出的可及範圍是會隨著道路的分佈而變化的,在「Isoline 2」甚至因為橋樑的形狀而變化,這就代表 HERE Isoline Routing 是可以忠實的反映出現實的可及範圍,而不是傳統的用圓心加上半徑算出範圍的作法。

使用 Isoline Routing,可以更加準確的算出在一定時間或距離內可以到達的範圍,這個在社會安全、商業分析上都非常的有價值。

接著我們來試試看算出以時間為基準的可及範圍,請在左方的「Range」選擇「TIME」,並且在下方的「VALUE, S」中輸入「900」,代表 900 秒,也就是 15 分鐘。下方的「TRAFFIC ROUTING」則選擇「Enabled」,這樣會把路況也考慮進去,算出來的可及範圍會更符合現實。

按下右下角的「Send」之後,就會算出從起點出發開車 15 分鐘會到達的範圍。以此案例來說,從台北 101 出發行駛 15 分鐘最遠可以到達新店、內湖、南港與大佳河濱公園。可以看到只要是有高快速道路的地方,可及範圍就會往外延伸,這是因為高快速道路的行駛速度比一般道路快,因此在同樣的時間可以移動更遠的距離。因此同樣是 15 分鐘,待在市區只會到大安森林公園,但上了高快速道路都可以跑到新店了。

這邊容我重複一下上一個課程 快速建構地圖服務(八)- 認識 Matrix Routing 中的一句格言「看起來近的不一定近,看起來遠的也不一定遠」,而 HERE Isoline Routing,也是用來幫助您獲得正確空間/時間概念的方便工具。

接著我們來展示一下電動車的可及範圍與一般車輛有何不同,請按下左上角的「New Tab +」來新增一個「Calc Isoline」的分頁,這邊會是「Isoline 2」。

然後,在「Isoline 2」的起點位置輸入以下經緯度:23.912213,120.686272,這是一個位在南投市的地點,接著在「Range」中選擇「Consumption」,並在下方的「Value」中輸入「10000,20000,30000」(單位為 Wh)代表剩餘電量為 10000Wh、20000Wh、30000Wh。至於「Traffic Routing」,您可以自由選擇,因為這不是重點。

接著按下「Mode」下方的「Features」,會出現七種道路的迴避選項,請在「TOLLROADS」與「MOTORWAYS」都選擇「Strict Exclude」,以免高快速道路影響計算的結果。

接著下方的「Consumption」,請選擇「Default」。接著按下右下角的「Send」,就算出了從南投市出發的剩餘電量為 10000Wh、20000Wh、30000Wh三台電動車,能夠抵達的最遠範圍。這邊要留意的是,您會發現往西北方、西南方、北方的範圍,都比往東北方、東南方還要來的遠不少。為什麼?您應該已經猜到了,因為電動車的特性,下坡非常省電,甚至還可以回充,但上坡就非常耗電,因此比較往東北跟東南的範圍,都比往其他方向少很多。

如果把「Range」改成「DISTANCE」,出來的結果,往東與往西的方向就沒有那麼懸殊。

這樣的比較,是不是讓您更了解 HERE 在一般汽車路徑計算跟電動車路徑計算的獨到之處呢?

接著我們再來玩一個參數「Max Points」,這個參數有趣的地方在於,您可以依照您的需求來調整多邊形的精細度。請把裡面的值改成「50」,也就是說算出來的每個多邊形不能夠超過 50 個點,這樣出來的多邊形非常的粗略,但是也節省了回傳的時間與流量。因此您可以依照您的需求來調整這個參數。

同樣的,下方的「API CALL」中的 URL 也可以複製出來,稍做修改就可以使用,例如:

https://isoline.route.api.here.com/routing/7.2/calculateisoline.json
?mode=fastest;car;motorway:-3,tollroad:-3
&maxpoints=50
&rangetype=distance
&range=10000,20000,30000
&jsonattributes=41
&quality=1
&start=geo!stopOver!23.912213,120.686272
&app_code=pxIXqdtgOSwQDXSDfjLQpw
&app_id=cgZPrYfgRePXzXC3PbBp

修改過後就變成:

https://isoline.route.ls.hereapi.com/routing/7.2/calculateisoline.json
?mode=fastest;car;motorway:-3,tollroad:-3 // 最快汽車路徑,完全避開高快速公路與收費道路
&maxpoints=50 // 多邊形最多 50 個點
&rangetype=distance // 使用距離計算範圍
&range=10000,20000,30000 // 定義三個範圍分別為 10000、20000、30000
&jsonattributes=41 // 41 = 1(屬性首字元小寫)+8(在物件中加入「_type」屬性)+32(回傳路徑的形狀為 double 而非字串)
&quality=1 // 最佳品質
&start=geo!stopOver!23.912213,120.686272 // 起點
&apikey={APIKEY} // 您的 APIKEY

以上就是 HERE Isoline Routing 的介紹,我們已經介紹了 HERE Routing API 的三個主要功能:

  1. 路徑規劃功能:算出點到點之間的完整路徑。
  2. Matrix Routing:建立多個點之間的正確空間關係。
  3. Isoline Routing:建立一定時間或空間內的可及範圍。

再加上一個 快速建構地圖服務(六)- HERE Waypoints Sequence 路徑最佳排序 介紹過的 Waypoints Sequence 功能,就像是四大天王的組合,已經能夠回答幾乎所有空間關係的基本問題:

  1. 我要怎麼到達我想去的地方?花多少時間?走多遠
  2. 我要怎麼選擇最快最近的目的地?
  3. 我要怎麼知道我最遠可以到哪裡?
  4. 我想去的地方這麼多,怎麼決定順序

如果您是一個 Location Based Service (LBS / 適地性服務)的提供者,這四個主題絕對是您必須面對的難題,而 HERE Routing API 以及 Waypoints Sequence 就是協助您滿足客戶需求的最佳工具!

※ 想了解更多 Isoline Routing 的參數與使用方法,請到 HERE 開發者網站

「快速建構地圖服務」系列文章

快速建構地圖服務(一) - 認識 HERE Studio / Data Hub
快速建構地圖服務(二) - 認識 HERE Data Hub CLI / API
快速建構地圖服務(三) - 使用 QGIS 玩轉 HERE Data Hub
快速建構地圖服務(四) - 當 Leaflet JS 遇見 Data Hub
快速建構地圖服務(五) - 整合 HERE 地點搜尋 API
快速建構地圖服務(六)- HERE Waypoints Sequence 路徑最佳排序
快速建構地圖服務(七)- 認識 HERE Routing API - 路徑規劃
快速建構地圖服務(八)- 認識 Matrix Routing
快速建構地圖服務(九)- Isoline Routing
快速建構地圖服務(十)- HERE Tour Planning 物流路徑預排與成本精算
快速建構地圖服務(十一)- HERE Route Matching GPS 軌跡分析
快速建構地圖服務(十二)- HERE Custom Locations 地圖資料倉儲與查詢
快速建構地圖服務(十三)- HERE Geofencing 地理圍籬
快速建構地圖服務(十四)- HERE Custom Routes 自建路網 + Vector Tile 向量圖磚 + Map Image API 靜態地圖
快速建構地圖服務(十五)- HERE Positioning 網路定位服務


圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言